 const webpack = require('webpack');
 const autoprefixer = require('autoprefixer');
 const HtmlWebpackPlugin = require('html-webpack-plugin');

 const config = require('./config'); // 引入配置
 const API = require('./API');
 const defPath = config.defPath;
 const APP_PATH = defPath.APP_PATH; // 源码目录


 module.exports = function() {
   return {
     context: defPath.ROOT_PATH, // 设置跟目录为执行环境
     resolve: { // 解析模块请求的选项
       modules: [
         APP_PATH,
         'node_modules'
       ],
       // 用于查找模块的目录
       extensions: [
         '.js', '.json', '.jsx', '.css','.html'
       ],
       // alias:{
       //      common: './frontend/components',
       //      tmpUrl: './frontend/template'
       //    }
       // 使用的扩展名
     },
     cache: true, // 启用缓存
     module: { // 公用的加载器
       rules: [{
           enforce: 'pre', // 前置执行
           test: /\.(js|jsx)$/,
           include: APP_PATH,
           loader: 'eslint-loader',
           options: {
             configFile: defPath.ESLINT_PATH // 指定 eslint 的配置文件路径
           }
         },
         {
           test: /\.(js|jsx)$/,
           include: APP_PATH,
           loader: 'babel-loader'
         },
         { // 向应用特定文件中注入变量，应用中可以直接使用 baseUrl
           test: require.resolve(defPath.REQUEST_PATH),
           loader: 'imports-loader?baseUrl=>' + JSON.stringify(API[process.env.NODE_ENV || 'development'])
         },

       ]
     },
     plugins: [
       // autoprefixer 是 postcss-loader 的 插件，需要在这里进行 autoprefixer 插件的配置
       new webpack.LoaderOptionsPlugin({
         options: {
           context: '/',
           minimize: true,
           postcss: [autoprefixer(config.autoConfig)]
         }
       }),
       // 依照模板生成 html
       new HtmlWebpackPlugin({
         template: defPath.TPL_PATH,
         filename: 'index.html',
         inject: 'body',
         minify: {
           removeComments: true
         },
         cache: false
       })
     ]
   };
 };
